package com.goldgov.conference.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

/** 
 * @ClassName: ConferenceService 
 * @Description: 会议记录service
 */
public interface ConferenceService {
	
	/**
	 * 添加会议记录
	 * @date 2018年6月4日 上午10:16:10 
	 */
	Boolean addConference(Conference conference);
	
	/**
	 * 获取主键
	 * @return
	 */
	Conference getConferenceID();
	
	/**
	 * 获取会议记录列表
	 * @param query
	 * @return
	 */
	List<Conference> getConferenceList(ConferenceQuery query);
	/**
	 * 根据支部id获取会议记录列表
	 * @param query
	 * @return
	 */
	List<Conference> getConferenceListByOrgId(ConferenceQuery query);
	/**
	 * 获取会议记录列表管理员
	 * @param query
	 * @return
	 */
	List<Conference> getConferenceListByAdmin(ConferenceQuery query);
	/**
	 * 获取会议记录列表管理员
	 * @param query
	 * @return
	 */
	List<Conference> getConferenceListMobileByAdmin(@Param("query") ConferenceQuery query);
	
	/**
	 * 根据主键查询会议记录
	 * @param id
	 * @return
	 */
	Conference getConference(Conference obj);
	
	
	/**
	 * 添加会议记录与用户关系表
	 * @date 2018年6月6日 下午12:01:22 
	 * @author hanxiangyu
	 * @param list
	 * @return
	 */
	Boolean addConferenceUser(List<ConferenceUser> list);
	/**
	 * 添加会议记录与用户关系表
	 * @date 2018年6月6日 下午12:01:22 
	 * @author hanxiangyu
	 * @param list
	 * @return
	 */
	Boolean addConferenceUser2(ConferenceUser con);
	
	/**
	 * 修改会议记录表
	 * @param conference
	 * @return
	 */
	Boolean updateConference(Conference conference);
	/**
	 * 更新会议记录时删除关联表
	 * @return
	 */
	Boolean deleteConferenceCorrelation(String conferenceID,String[] conferenceIDs);
	
	/**
	 * 获取已存在的用户与会议的记录
	 * @param ids
	 * @param conferenceID
	 * @return
	 */
	List<ConferenceUser> getExistUserIDs(String[] ids,String conferenceID);
	
	/**
	 * 取消会议记录
	 * @param ids
	 */
	Boolean cancelConference(String[] conferenceIDs,Integer activeState);
	
	/**
	 * 取消指定会议记录
	 * @param id
	 */
	Boolean cancelConferenceByID(String conferenceID,Integer publishState);

	/**
	 * 删除会议记录
	 * @date 2018年6月5日 下午6:54:47 
	 * @author hanxiangyu
	 * @param ids
	 */
	Boolean deleteConference(String[] ids);
	
	/**
	 * 发布取消会议操作
	 * @date 2018年6月11日 上午11:57:05 
	 * @return
	 */
	Boolean publishConference(Conference conference);
	int updateNum(Conference conference);
	
	/**
	 * 启用/未启用会议操作
	 * @date 2018年6月11日 上午11:57:05 
	 * @return
	 */
	Boolean activeConference(Conference conference);
	Conference getConferenceById(@Param("id") String id);
	
	/**
	 * 获取用户参加状态
	 * @date 2018年6月25日 下午3:15:54 
	 * @author hanxiangyu
	 * @param conference
	 * @return
	 */
	Conference getUserStates(Conference conference);
	/**
	 * 获取会议信息
	 * @param ids
	 * @return
	 */
	public List<Conference> getConListByIds(@Param("ids") String[] ids);
	/**
	 * 手动开启关闭会议
	 * @date 2018年7月24日 下午8:53:45 
	 * @author hanxiangyu
	 * @param conferenceBean
	 * @return
	 */
	public Boolean startAndEndConference(ConferenceBean conferenceBean);
	
	/**
	 * 根据code获取组织结构id
	 * @param scopeCode
	 * @return
	 */
	public String getOrgIdByCode(String scopeCode);
	/**
	 * 根据code获取组织结构id
	 * @param scopeCode
	 * @return
	 */
	String getOrgIdByUserId(String userId);
}
